import { defineStore } from 'pinia'
import { RouteLocationNormalized } from 'vue-router'

// 定义一个 Pinia 状态管理器，名为 'iframe'
const useIframeStore = defineStore('iframe', {
	// state: 定义存储 iframe 列表的状态，类型为 RouteLocationNormalized 数组
	state: () => {
		return {
			// 存储 iframe 路由信息
			iframeList: [] as RouteLocationNormalized[]
		}
	},
	// actions: 定义可修改状态的函数
	actions: {
		// setIframeList: 设置新的 iframe 列表，仅存储一个新的路由
		setIframeList(route: RouteLocationNormalized) {
			this.iframeList = [route]
		},
		// pushIframeList: 添加一个新的 iframe 路由，如果该路由不存在列表中
		pushIframeList(route: RouteLocationNormalized) {
			const target = this.iframeList.find((item) => item.path === route.path)
			if (!target) {
				this.iframeList.push(route)
			}
		},
		// removeIframeList: 从列表中移除指定的路由
		removeIframeList(route: RouteLocationNormalized) {
			const index = this.iframeList.findIndex((item) => item.path === route.path)
			if (index !== -1) {
				this.iframeList.splice(index, 1)
			}
		},
		// refreshIframe: 刷新 iframe
		refreshIframe(route: RouteLocationNormalized) {
			this.iframeList.forEach((item) => {
				if (item.path == route.path) {
					var url = route.meta.url
					item.meta.url = ''
					setTimeout(function () {
						item.meta.url = url
					}, 200)
				}
			})
		},
		// 清除路由
		clearIframeList() {
			this.iframeList = []
		}
	}
})

// 导出定义的 store 以供使用
export default useIframeStore
